﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Fuyao.Business.Entities.Models;
using Fuyao.Business.Logic.BC;
using Fuyao.Win.UI.Util;
using Fuyao.Win.UI.Common;

namespace Fuyao.Win.UI.Mantenimientos
{
    public partial class frmListVendedores : Form
    {
        BusinessLogic bc = new BusinessLogic();
        List<Vendedor> listVendedor = new List<Vendedor>();

        public frmListVendedores()
        {
            InitializeComponent();
        }

        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            this.ControlBox = false;
            this.WindowState = FormWindowState.Maximized;
            this.BringToFront();            
        }

        private void btnNuevo_Click(object sender, EventArgs e)
        {
            instanciarFrmVendedor("NUEVO VENDEDOR", true, null); //Nuevo
        }

        private void instanciarFrmVendedor(string titleForm, bool valOption, Vendedor beVend)
        {
            Mantenimientos.frmVendedores frm = new Mantenimientos.frmVendedores();
            frm.titleForm = titleForm;
            frm.valOpcion = valOption;
            frm.beVend = beVend;
            frm.ShowDialog();
            if (frm.action)
            {
                if (!valOption) limpiarControles();
                cargarGrillaVendedores(false);
            }
        }       

        private void cargarGrillaVendedores(bool _flag)
        {
            Vendedor beVendedor = new Vendedor();
            beVendedor.NombreVendedor = this.txtNombreVend.Text.Trim() == string.Empty ? "0" : this.txtNombreVend.Text.Trim();
            beVendedor.ApellidoVendedor = this.txtApellidosVend.Text.Trim() == string.Empty ? "0" : this.txtApellidosVend.Text.Trim();
            beVendedor.Estado = this.cboEstado.SelectedIndex == 0 ? true : false;
            listVendedor = bc.getVendedorByFilter(beVendedor);          
            if (listVendedor.Count > 0) dgvVendedores.DataSource = listVendedor;
            else
            {
                if (!_flag)
                {
                    MessageBox.Show("No se encontraron registros, verifique los filtros de búsqueda", "Sistema FUYAO - Mensaje de Confirmación", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    dgvVendedores.DataSource = null;
                }
            }
        }

        private void setColumnasGrilla()
        {
            ColVendedorID.DataPropertyName = "VendedorID";
            colNombreVendedor.DataPropertyName = "NombreVendedor";
            colApellidoVendedor.DataPropertyName = "ApellidoVendedor";
            ColEstadoVendedor.DataPropertyName = "Estado";
        }

        private void limpiarControles()
        {
            Utilitarios.limpiarControles(this);
        }

        private void btnEditar_Click(object sender, EventArgs e)
        {
            if (dgvVendedores.RowCount == 0)
            {
                MessageBox.Show("No existen registros para Editar", "Sistema FUYAO - Validando Opción", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            if (dgvVendedores.CurrentRow != null) instanciarFrmVendedor("EDITAR VENDEDOR", false, ((Vendedor)dgvVendedores.CurrentRow.DataBoundItem)); //Editar
            else
            {
                MessageBox.Show("Seleccione un registro para Editar", "Sistema FUYAO - Validando Opción", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }            
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (dgvVendedores.RowCount == 0)
            {
                MessageBox.Show("No existen registros para Eliminar", "Sistema FUYAO - Validando Opción", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            if (dgvVendedores.CurrentRow != null) eliminarVendedor();
            else
            {
                MessageBox.Show("Seleccione un registro para Eliminar", "Sistema FUYAO - Validando Opción", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }     
        }

        private void eliminarVendedor()
        {
            if (!((Vendedor)dgvVendedores.CurrentRow.DataBoundItem).Estado)
            {
                MessageBox.Show("El registro seleccionado ya se encuentra eliminado", "Sistema FUYAO - Validando opción", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }  

            if (MessageBox.Show("Esta seguro que desea eliminar el registro seleccionado", "Sistema FUYAO - Mensaje de Confirmación", MessageBoxButtons.YesNo,
                    MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
            {
                if (bc.DeleteVendedor(((Vendedor)dgvVendedores.CurrentRow.DataBoundItem).VendedorID,VariablesGlobales.GlobalEnUsuario.UsuarioID))
                {
                    MessageBox.Show("Se eliminó el registro correctamente", "Sistema FUYAO - Mensaje de Confirmación", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    cargarGrillaVendedores(false);
                }
                else
                    MessageBox.Show("Error al eliminar el registro seleccionado, contacte con Sistemas", "Sistema FUYAO - Mensaje de Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
        }

        private void btnRestaurar_Click(object sender, EventArgs e)
        {
           this.WindowState = FormWindowState.Normal;
        }

        private void btnMaximizar_Click(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Maximized;
        }

        private void btnCerrar_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void frmListVendedores_Load(object sender, EventArgs e)
        {
            this.cboEstado.SelectedIndex = 0;
            Utilitarios.configurarGrilla(ref dgvVendedores);
            setColumnasGrilla();
            cargarGrillaVendedores(true);
        }

        private void btnBuscarVendedor_Click(object sender, EventArgs e)
        {
            cargarGrillaVendedores(false); 
        }

        private void txtNombreVend_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(Keys.Enter)) this.txtApellidosVend.Focus();
        }

        private void txtApellidosVend_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == Convert.ToChar(Keys.Enter)) this.btnBuscarVendedor.Focus();
        }
    }
}
